// pages/house/repair/repair.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    // 报修类型选项
    repairTypes: [
      { id: 1, name: '水电维修', icon: '/assets/icons/water-electricity.png' },
      { id: 2, name: '家具维修', icon: '/assets/icons/furniture.png' },
      { id: 3, name: '空调维修', icon: '/assets/icons/ac.png' },
      { id: 4, name: '其他问题', icon: '/assets/icons/other.png' }
    ],
    // 表单数据
    formData: {
      type: '',
      description: '',
      contactName: '',
      contactPhone: '',
      images: []
    },
    // 最大图片数量
    maxImageCount: 4
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {

  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  },

  // 选择报修类型
  selectType(e) {
    const { id } = e.currentTarget.dataset
    this.setData({
      'formData.type': id
    })
  },

  // 输入描述
  inputDescription(e) {
    this.setData({
      'formData.description': e.detail.value
    })
  },

  // 输入联系人
  inputContactName(e) {
    this.setData({
      'formData.contactName': e.detail.value
    })
  },

  // 输入联系电话
  inputContactPhone(e) {
    this.setData({
      'formData.contactPhone': e.detail.value
    })
  },

  // 上传图片
  chooseImage() {
    const { images } = this.data.formData
    const { maxImageCount } = this.data
    
    wx.chooseImage({
      count: maxImageCount - images.length,
      sizeType: ['compressed'],
      sourceType: ['album', 'camera'],
      success: (res) => {
        this.setData({
          'formData.images': images.concat(res.tempFilePaths)
        })
      }
    })
  },

  // 删除图片
  deleteImage(e) {
    const { index } = e.currentTarget.dataset
    const { images } = this.data.formData
    images.splice(index, 1)
    this.setData({
      'formData.images': images
    })
  },

  // 预览图片
  onPreviewImage(e) {
    const { url } = e.currentTarget.dataset
    wx.previewImage({
      current: url,
      urls: this.data.formData.images
    })
  },

  // 提交报修
  submitRepair() {
    const { formData } = this.data
    if (!formData.type) {
      wx.showToast({
        title: '请选择报修类型',
        icon: 'none'
      })
      return
    }
    if (!formData.description.trim()) {
      wx.showToast({
        title: '请输入问题描述',
        icon: 'none'
      })
      return
    }
    if (!formData.contactName.trim()) {
      wx.showToast({
        title: '请输入联系人',
        icon: 'none'
      })
      return
    }
    if (!formData.contactPhone.trim()) {
      wx.showToast({
        title: '请输入联系电话',
        icon: 'none'
      })
      return
    }

    // TODO: 调用报修API
    wx.showLoading({
      title: '提交中...'
    })

    setTimeout(() => {
      wx.hideLoading()
      wx.showToast({
        title: '提交成功',
        icon: 'success',
        duration: 2000,
        success: () => {
          setTimeout(() => {
            wx.navigateBack()
          }, 2000)
        }
      })
    }, 1500)
  }
})